{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "e59305ca-2b27-4a0f-b004-ad7e5214ae7d",
   "metadata": {},
   "outputs": [],
   "source": [
    "# model_names = ['xception','densenet201','resnetv2_50', 'vgg16', 'darknet53', 'mobilenetv3_large_100', 'inception_resnet_v2', 'nasnetalarge', 'efficientnetv2_rw_m', 'convnext_xlarge_384_in22ft1k']\n",
    "model_names = [\n",
    "\"efficientnetv2_rw_m\",\n",
    "\"mobilenetv3_large_100\",\n",
    "\"inception_resnet_v2\",\n",
    "\"resnetv2_50\",\n",
    "\"nasnetalarge\",\n",
    "\"darknet53\",\n",
    "\"xception\",\n",
    "\"densenet201\",\n",
    "\"vgg16\",\n",
    "\"convnext_xlarge_384_in22ft1k\",\n",
    "]\n",
    "\n",
    "model_name_dict = {\n",
    "\"efficientnetv2_rw_m\": \"EfficientNetV2\",\n",
    "\"mobilenetv3_large_100\": \"MobileNetV3\",\n",
    "\"inception_resnet_v2\": \"Inception ResNet V2\",\n",
    "\"resnetv2_50\": \"ResNetV2 50\",\n",
    "\"nasnetalarge\": \"NasNetLarge\",\n",
    "\"darknet53\": \"Darknet53\",\n",
    "\"xception\": \"Xception\",\n",
    "\"densenet201\": \"DenseNet201\",\n",
    "\"vgg16\": \"VGG16\",\n",
    "\"convnext_xlarge_384_in22ft1k\": \"ConvNext\",\n",
    "}\n",
    "\n",
    "dataset_folder = \"dataset03\"\n",
    "exp_name = f\"{dataset_folder}_benchmarking\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "02209ce5-7a59-4cb6-95de-8803d57e3fab",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "efficientnetv2_rw_m\n",
      "mobilenetv3_large_100\n",
      "inception_resnet_v2\n",
      "resnetv2_50\n",
      "nasnetalarge\n",
      "darknet53\n",
      "xception\n",
      "densenet201\n",
      "vgg16\n",
      "convnext_xlarge_384_in22ft1k\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "import pandas as pd\n",
    "\n",
    "benchmark_dict = {}\n",
    "\n",
    "for model_name in model_names:\n",
    "    print(model_name)\n",
    "    \n",
    "    if os.path.exists(f\"models/{exp_name}/{model_name}_eval.csv\"):\n",
    "        benchmark_dict[model_name] = pd.read_csv(f\"models/{exp_name}/{model_name}_eval.csv\")\n",
    "        continue"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "78cc249b-1930-492d-9809-a0385a474e6b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "20000"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result_df = None\n",
    "for model_name in model_names:\n",
    "    benchmark_dict[model_name][\"name\"] = [model_name_dict[model_name] for i in range(len(benchmark_dict[model_name]))]\n",
    "    if result_df is None:\n",
    "        result_df = benchmark_dict[model_name]\n",
    "    else:\n",
    "        result_df = pd.concat([result_df, benchmark_dict[model_name]], ignore_index=True)\n",
    "result_df[\"index\"] = list(range(len(result_df)))\n",
    "len(result_df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "96bcea48-80ea-45ad-bbf7-d48f791cdcb6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlcAAAFCCAYAAADcyPgxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAABTMUlEQVR4nO3deVxV1f7/8dcBRExwTETTAinBWbO0nEVSHBAFTc20NDWH8jqVol0crkPmjENFmt7M0lQENa2+hmRlWnkr9GaZwHHIKUWEA8p4fn94PT8JB4bD/H4+Hj7i7LX2Wp+9PHk+rL3O2gaz2WxGRERERKzCpqgDEBERESlNlFyJiIiIWJGSKxERERErUnIlIiIiYkVKriTfzGYzKSkp6LsRIiJSFtzvc8+ukOORUiglJYX//ve/1K9fH3t7+6IOR0REpEClpqZy4sQJGjVqhIODQ7ZyJVeSb2lpaQCcOHGiiCMREREpPGlpaUqupGCUK1cOwGozV8eOHaNx48b5bqcs0ZjljsYrdzReuaPxyr2SNma3Zq5uff79nZIryTeDwQCAvb095cuXt0qb1mqnLNGY5Y7GK3c0Xrmj8cq9kjhmtz7//k4L2kVERESsSDNXUmasX7+e2NjYog6D+Ph4AKpUqWK1Nk0mE+Hh4VZrz83NjWHDhlmtPRGRskTJlZQZsbGxHP/9D2wrVCvSONKT4wC4lJBh3YbjUqzSTMb1OKu0IyJSVim5kjLFtkI1nB7rWqQxJP7xBUCRx3E3t+ITEZG80ZorEREREStSciXFztGjR4mMjCzqMEREilRkZKT+LSyhlFxJsRMVFUVERERRhyEiUqQiIiL0b2EJVWaSKy8vL3x8fPDz87P8OXv2LPv27aN79+706dOHmJiYbK/9/Py4cePGPdueMWMGP/74Y77iCw0NzfJNtsOHD+Ph4UFISEiWY/7+/vdt6+zZs2zZssXyeubMmSxevDhbvSFDhrBjxw727duHv78/vXr1omfPnrz//vv5uhYREZGyrEwtaA8ODqZ+/fpZjs2aNYvx48fTvXt3AObPn5/ldU6+3j5v3rx8x7Zjxw6qVq2Km5ub5ViNGjX497//zcCBA6lUqVKO2/rzzz/ZsmULAwYMACAgIIBx48YxceJEbG1tAThz5gy//vorISEhnDhxgrfffpuaNWuSmJiIv78/TZs25Yknnsj3dYmIiJQ1ZSq5+rv58+dz5MgRYmNj+eijj2jQoEGW1xs3bsTDw4P//Oc/VKxYkejoaObNm8dff/0FwPDhw+nbty9Dhgxh+PDhdO7cGZPJxIIFC/j9999JSUmhdevWBAYGYmtry5AhQ2jcuDE///wzly5donv37kyZMoXt27dz7Ngx5s6dy/Lly5k6dSq2trY4OzvTokUL3nvvPSZPnpwt/q+++oq3336b1NRUypUrR2BgIM2bN2fOnDmcPXsWPz8/HnnkEYKDg6lSpQrffPMNHTt2BG7OlHXv3p0KFSrQrFkzS5tOTk64u7vz559/FllyZTKZuHz5MkFBQVZt12g0kplRpt/yOZKZdh2j0Wj18S9OrL0vWGmn8coda42X0Wi06n54UnjK1CfN+PHjLdvr29raEhoayvHjxy2JEZDt9S3p6emMHTuWCRMmWGa1rl69mq2PBQsW8OSTTzJv3jwyMzMtydOzzz4LwPnz59m0aRNJSUl4e3vTr18/AgICCAsLy9Lv4cOHARgzZgy+vr4MGTIkSz+nT59mzZo1rFu3DkdHR/744w9GjhxJZGQkQUFBLFy4kNDQUEv9gIAAQkND6dixI5mZmYSFhbF06dJs8UdHR/Pzzz8ze/bsPI2xiIhIWVemkqs73RbMqdjYWNLT0y2JFUDVqlWz1YuIiCAqKor169cDcOPGDWrWrGkp9/HxwcbGxjJDdPr0aVxdXe/a74MPPsizzz7LmjVrsvT99ddfc/r0aQYPHmw5lp6ezuXLl+/YTu/evVmxYgXx8fH8+uuvVKhQgRYtWmSpc+nSJcaOHcvMmTOzxFzYHB0dcXFxYc6cOVZtNygoiBOnr1i1zdLIplwFXB+ubvXxL06OHDlCy5YtizqMEkPjlTvWGq/SPHtc2pWp5KowmM1m1qxZQ926de9YfvuDKW1tbcnIuP8u3SNGjKB79+40atQoy/H27dvz1ltvZasfHR2d7Vi1atVo164du3fv5qeffsq2MP7KlSsMGzbM0peIiIjkTZn5tmB+ubm5YWdnx969ey3H7nRb0MvLi5CQEEvSFBcXx5kzZ+7bfsWKFUlMTLxjmZOTE8OGDePtt9+2HGvbti1ff/01f/zxh+VYVFQUcHPmx2QyZWsnICCAjz/+mMjISPr06ZPlOoYNG8bgwYPp37//fWMVERGRuytTydX48eOzbMVw9OjRHJ9rZ2fHmjVr2Lx5M76+vvTu3ZuvvvoqW73p06djY2ODn58fvr6+jBgxgosXL963/QEDBrB69Wr8/Pw4ePBgtvLnn38+yyyXq6srixYtYsaMGfTu3Zvu3btbtl/w8PDAzc2NXr16MX78eMs57du3JyEhgVatWvHggw9ajoeEhGA0GtmyZYtlbLZv357jsbG2pk2b4uXlVWT9i4gUB15eXvq3sIQymM1mc1EHISVbSkoKx44do3Hjxllue+ZVQa3vuLXmqqif6VcSni1YX2uu5DYar9zReOVeSRuz+33ulamZKxEREZGCpgXtUqZkXI+zzBwVlfTkOIAij+NuMq7HAdWLOgwRkRJLyZWUGbfvfl+U4uNv7pJvzc0BTSYTjo6OVmqterEZKxGRkkjJlZQZw4YNK+oQCkxJW68gIlKaac2ViIiIiBUpuRIRERGxIiVXIiIiIlak5EpERETEipRciYiIiFiRkisRERERK1JyJSIiImJFSq5ERERErEibiEqptX79emJjYwuk7fj4eMC6u6znhJubW6neDFVEpDRQciWlVmxsLL+fOEmFStZ/Tl5ywhUAEm6Yrd723Vz/X58iIlK8KbmSUq1Cpep4tu5t9XZ/O7wToEDavl+fIiJSvGnNlYiIiIgVKbmSYufo0aNERkYWdRgiIlJKREZGFurnipIrKXaioqKIiIgo6jBERKSUiIiIKNTPFSVXt/Hy8qJdu3ZkZGRYjoWGhuLh4cGHH354z3OHDBnC/v3771g2Y8YMfvzxRwCmTZt237YAVq5ciYeHB7/88kuWYwsXLrzvuYcPH+abb76xvO7RowcHDhzIUicpKYnHH3+cs2fPsn37dnx9ffHz88PX15cPPvjgvn2IiIjInSm5+htnZ+csicmOHTto1KhRvtqcN28eTzzxRK7Pe+ihh1iyZEmuz/v+++/59ttvLa/9/f3ZsWNHljqfffYZTZo0oU6dOnTr1o2dO3cSHh7Oxx9/zPr16/ntt99y3a+IiIjo24LZ9O3bl9DQUDp27MiZM2dITk6mfv36wM3Znrlz53L06FEA/Pz8GDlypOXcgwcPsnr1aq5du0b37t2ZNGkScHNWa/jw4XTu3DlLX6mpqSxbtowffviB1NRUPDw8mDVrFhUrVgSga9euHDx4kK+//pr27dtnizUkJIQvvviCjIwMatasyb/+9S/i4uLYvHkzmZmZHDx4kJ49e+Lv72+Jq3LlysDNGbkBAwYA4OjoaGnzxo0bpKWlYTAYrDWkuWYymbh8+TJBQUH5asdoNJJhKGelqIpeWkoyRuO1O46LyWQiPDy8CKIqmTReuaPxyh2NV+4V9JgZjcZC3ZdQM1d/06pVK06cOMG1a9fYsWMHffr0sZStWbOGzMxMdu3axebNmwkLC+Orr76ylEdHR1uO79+//663CW9Zu3YtTk5ObNu2jZ07d+Ls7ExISIil3GAwMGnSJJYtW4bZnHU/pfDwcM6cOcMnn3zCjh076NChA2+++SYeHh4MHDiQPn36EB4ezqhRo3jwwQd56qmn2L17NwCnTp3ixIkTdO3a1dLel19+Sc+ePencuTMjRozAw8MjP8MoIiJSZmnm6m8MBgPdu3fn008/5dNPP2Xz5s3897//BeC7775j+vTpGAwGHB0d6dmzJ9999x0dO3YEoE+fPtjZ2WFnZ0ePHj04dOhQttmq20VERGAymfj888+BmzNZnp6eWep06tSJd999l71792Y799ixY/Tt2xeAjIyMLDNQfxcQEMDbb7/N4MGDCQ0NpUePHjg4OFjKu3TpQpcuXTh37hzjxo2jQ4cO1KtXLxcjZz2Ojo64uLgwZ86cfLUTFBTE6QtXrRRV0StX/gEedql6x3E5cuQILVu2LIKoSiaNV+5ovHJH45V7BT1m+b0TkltKru6gb9++9O/fnyeffJKqVasWWD9ms5mZM2fy9NNP37Pe5MmTmTFjBj4+PlnOHTNmDP369ctRX506dWLmzJn89ttvhIeHExwcfMd6tWvXpkmTJkRGRhZZciUiIlKS6bbgHdStW5eJEycyduzYLMeffvpptm/fjtlsxmQysWfPHtq0aWMp37lzJ+np6SQnJ7N3716eeuqpe/bj5eXFhg0buHHjBnDznnN0dHS2ek888QSurq7s2rUry7kfffQR165dA27Oet1ahO7o6EhiYmKWNuzs7OjduzczZszAycmJpk2bWspu7zMuLo7Dhw9b1pmJiIhI7mjm6i5uLfa+3dixY/nXv/6Fr68vAL1796ZDhw6W8nr16jFw4EDLgvZ73RIEGDVqFKtWraJfv34YDAYMBgOvvPIK7u7u2epOnDjRcgsQbt6CjI+P5/nnnwduzmQNGjQIT09PvL29CQsLw8/Pj549ezJq1CgA+vXrx/vvv09gYGCWtrds2cK3336LnZ0dZrOZ559/nnbt2uVwpKyvadOmuLq6Fln/IiJSunh5eRVqfwbz31dKi+RSSkoKx44do3HjxpQvXz7f7Vnr3vutNVel6dmCWnNlHRqv3NF45Y7GK/dK2pjd73NPtwVFRERErEi3BaVUu55wxTLLZE3JCVcACqTtu7mecAVcCu4LFiIiYh1KrqTUcnNzK7C24x1ubrJamJvS4VK1QK9JRESsQ8mVlFrDhg0r6hBERKQM0porEREREStSciUiIiJiRUquRERERKxIyZWIiIiIFSm5EhEREbEiJVciIiIiVqTkSkRERMSKlFyJiIiIWJE2EZVSZ/369cTGxuaobnx8PFAwO627ublpI1MRkTJIyZWUOrGxsfxxMpoq1ZzvWzf+ys1nBKZl2lo1hvi4S1ZtT0RESg4lV1IqVanmTOceA+9bb/+ezQA5qpsbt9oVEZGyR2uuRERERKxIyZUUO0ePHiUyMrKow5AiFhkZqfeBiJRISq6k2ImKiiIiIqKow5AiFhERofeBiJRIhZJceXl5ceLEicLoKovQ0NAs3xr78ssvWbhwoVX78PLywsfHh969e9O9e3e2bt2a57bOnj2Lh4cHM2fOzHKsdevW9z03ISGB9957745lKSkptGrViujo6CzHz5w5Q8uWLUlOTmb27NmW6xg4cCBHjx7N83WIiIiUZaV65mrHjh0YjUbL6y5dujB16lSr9xMcHMzOnTtZsWIFs2fP5uLFi3lu64EHHuDLL7/k9OnTuTovISGBtWvX3rGsfPny9OzZkx07dmQ5vmPHDrp168YDDzxAhw4d2LVrFzt37uTll19m4sSJeb4GERGRsqzQvy04ZMgQGjduzM8//8ylS5fo3r07U6ZMAeDixYvMnTvXkhD16tWLl19+GZPJxIIFC/j9999JSUmhdevWBAYGYmtry5AhQ/D09OSnn37i2rVrdO/enUmTJrF9+3aOHTvG3LlzWb58OVOnTuXChQtERkYSHBwMQEhICDt37gSgSZMmvPHGG1SsWJGVK1cSGxtLYmIiZ86c4eGHH2bFihVUqFDhntdWv359KlWqxMWLF6lZsyYxMTHMnz+fq1evkpaWxgsvvEBAQADXr19n6tSpnDx5Ejs7O9zc3FixYgUA9vb2DB8+nOXLl7N06dJsffzyyy8sXryYpKQkAMaPH0+nTp2YM2cOiYmJ+Pn5UaFCBTZvzvpttYCAAMaMGcPEiROxtbXFbDYTFhbGokWLAOjcubOlbvPmzblw4QKZmZnY2BR+/m0ymbh8+TJBQUF5Ot9oNGJbzsHKUeXOjetJGI1X8nwNuWUymQgPDy+UvgqL0WgskP3HREQKWpFsxXD+/Hk2bdpEUlIS3t7e9OvXD1dXV6ZMmULHjh1ZuXIlAHFxcQAsWLCAJ598knnz5pGZmcmUKVPYvn07zz77LADR0dFs3ryZlJQUBg4cSIsWLQgICCAsLIzhw4dbEofQ0FBLDF999RU7d+5k8+bNVKxYkalTp7JmzRpee+01AI4dO8a2bdtwcnLipZdeYteuXZb+7ubIkSNUrVoVT09P0tPTmTJlCosWLcLd3R2TyURAQADNmzcnJiaGpKQk9uzZA8C1a9eytDN48GB8fHw4fvw4Tk5OluMJCQnMnDmTkJAQnJ2duXTpEv369WP37t0EBQUREBBw1w/Yxo0bU7VqVb755hs6duzIoUOHsLe3p2XLltnqbtq0iU6dOhVJYiUiIlLSFUly5ePjg42NDU5OTri7u3P69Glq1KjBTz/9xPr16y31qlWrBtxc2BoVFWUpu3HjBjVr1rTU69OnD3Z2dtjZ2dGjRw8OHTqUZSbmTr777jt69OiBo6MjAM8++yzz58+3lLdr145KlSoB0LRp03vephs/fjxms5nTp0+zYsUK7O3tOXnyJNHR0UyaNMlSLy0tjZiYGDw9PYmOjmb27Nm0atWKTp06ZWmvfPnyjB07lqVLl2ZZf/XTTz9x9uxZRo4caTlmMBg4deoUVatWvef1ws3Zq+3bt9OxY0e2b9+Ov79/tjqffvopu3btYtOmTfdtr6A4Ojri4uLCnDlz8nR+UFAQf8UlWjmq3HGoUJEaD+X9GnLryJEjd0yUS7LCmvUTEbG2Ikmuypcvb/nZ1taWjIyMe9Y3m82sWbOGunXrFnRoFn+PMSUl5a51g4ODqV+/Pnv37iUwMJDHH38cs9lM1apV7zqTtHv3bg4dOsSBAwdYtmwZu3btylLu7+/PunXr+PHHHy3HzGYzHh4ed0x8zp49e99r6t27NytWrODMmTNERETw+uuvZyn/v//7P5YtW8aGDRt48MEH79ueiIiIZFds7vtUrFiRFi1asGHDBsuxW7cFvby8CAkJsSRhcXFxnDlzxlJv586dpKenk5yczN69e3nqqacsbSYm3nkG4+mnn2bv3r2YTCbMZjPbtm2jTZs2+bqG7t2707ZtW959913c3NxwcHAgLCzMUh4dHY3JZOLChQvY2tri7e1NYGAgcXFxlmfc3WJra8uECRMs68MAWrRowalTpzh06JDlWFRUFGazGUdHR27cuEF6evpd46tatSrt2rVjwoQJtGrVCmfn//94mP3797NgwQLWrVtHnTp18jUOIiIiZVmxSa4AFi9ezH/+8x969epF79692bZtGwDTp0/HxsYGPz8/fH19GTFiRJZv5NWrV4+BAwfi5+dHp06dLLcEBwwYwOrVq/Hz8+PgwYNZ+urYsSO+vr4MHDgQX19fAMaMGZPva5g8eTKhoaHExcXxzjvvsGfPHnx9fenZsyezZ88mNTWV33//nQEDBtC7d2/69+/PqFGjstzmvMXHxyfL7b7KlSuzZs0aVq9ebdn6YdWqVZjNZqpUqYKvr6/lmu4mICCAY8eOERAQkOV4YGAgaWlpjB8/Hj8/P/z8/Lh69Wq+x0NERKSsMZjNZnNRB5EfQ4YMybJoXQpfSkoKx44do3Hjxllup+bVhg0bcHV1zbYWLadurbkq6mcL1qjmpDVX+XBrd/a8vg/upTSOV0HSeOWOxiv3StqY3e9zTw9ulmKnSZMmJep/MikYBZFUiYgUhhKfXG3cuLGoQxARERGxKPHJlcidxMddstzyu2e9K5cAclQ3t/3XqOZ0/4oiIlLqKLmSUsfNzS3HdcvZ3PwGapUq1k2EalRzylUcIiJSeii5klJn2LBhRR2CiIiUYcVqKwYRERGRkk7JlYiIiIgVKbkSERERsSIlVyIiIiJWpORKRERExIqUXImIiIhYkZIrERERESvSPldSqqxfv57Y2Ng8nx8fHw9AlSpVrBPQHbi5uWkvLhGRUkzJlZQqsbGxREfHUNOlVp7Ov3IlDgC7ctmfcm4NFy+cL5B2RUSk+FByJaVOTZdaDH7h5Tydu+nf7wLk+fycti8iIqWX1lyJiIiIWJGSKxERERErUnIlxc7Ro0eJjIws6jBEirXIyEj9fyJSTCm5+h8vLy98fHzo3bs33bt3Z+vWrXlu6+zZs3h4eDBz5swsx1q3bn3fcxMSEnjvvfcsr0NCQpg4cWK2etOmTWPVqlX85z//YeDAgfTo0YMePXqwcOFCzGbzHdseMmQIXbp0wc/PDz8/P7Zv324pi42NZcCAAXTr1o0BAwZgNBpzccXWFRUVRURERJH1L1ISRERE6P8TkWJKydVtgoOD2blzJytWrGD27NlcvHgxz2098MADfPnll5w+fTpX5yUkJLB27VrL6z59+hAZGUlCQoLlWFJSEl988QV9+/bF0dGRN998kz179hAWFsbPP/9MeHj4Xdt/4403CA8PJzw8nICAAMvxmTNn8txzz/H555/z3HPPERQUlKu4RURE5CYlV3dQv359KlWqZEmuYmJiGDFiBAEBAfTu3dsy43P9+nXGjx9Pjx496N27N//4xz8sbdjb2zN8+HCWL19+xz5++eUXhgwZgr+/P/7+/pbp/Tlz5pCYmIifnx8DBw7E2dmZ1q1bs3v3bsu5e/fupVmzZjz00EPUr18fV1dXS58NGzbk3LlzubreK1eu8Ouvv9KrVy8AevXqxa+//kpcXFyu2hERERFtxXBHR44coWrVqnh6epKens6UKVNYtGgR7u7umEwmAgICaN68OTExMSQlJbFnzx4Arl27lqWdwYMH4+Pjw/Hjx3FycrIcT0hIYObMmYSEhODs7MylS5fo168fu3fvJigoiICAgCyzTwEBAbz77rs899xzAISGhlp+vt2VK1f4/PPPCQkJueu1vfXWWyxduhQPDw9ee+01atasyfnz56lZsya2trYA2Nra4uzszPnz56lWrVreBzKPTCYTly9fztPsmdFoxKHCAwUQlXWYTIlc/uui1WcGTSbTPWcsJavSMF5Go7FAN7sVkbxTcnWb8ePHYzabOX36NCtWrMDe3p6TJ08SHR3NpEmTLPXS0tKIiYnB09OT6OhoZs+eTatWrejUqVOW9sqXL8/YsWNZunRplvVXP/30E2fPnmXkyJGWYwaDgVOnTlG1atVscXXq1ImZM2fyxx9/UK5cOU6ePMkzzzyTpY7JZGLMmDEMHz6chg0b3vH63nrrLWrVqkVGRgbvvvsuEyZM4OOPP87LUImIiMhdKLm6TXBwMPXr12fv3r0EBgby+OOPYzabqVq16l1/y929ezeHDh3iwIEDLFu2jF27dmUp9/f3Z926dfz444+WY2azGQ8PDzZt2pStvbNnz2Y7Vq5cOXr37k1oaCj29vb07NmT8uX//w7i169fZ/To0bRt25bhw4ff9fpq1bq5a7mtrS1Dhw5l1apVZGZmUqtWLS5evEhGRga2trZkZGRw6dIlS/3C5ujoiIuLC3PmzMn1uUFBQZiSrhdAVNbh6OiES03nPF3bvRw5coSWLVtatc3SrDSMl9ZFihRfWnN1B927d6dt27a8++67uLm54eDgQFhYmKU8Ojoak8nEhQsXsLW1xdvbm8DAQOLi4izPprvF1taWCRMmEBwcbDnWokULTp06xaFDhyzHoqKiMJvNODo6cuPGDdLT07O0ExAQwM6dOwkLC8uyED0lJYXRo0fTrFmzLGu+/i49PZ3Lly9bXn/66afUr18fGxsbqlevToMGDSzrunbv3k2DBg2K5JagiIhISaeZq7uYPHky/v7+jBw5knfeeYf58+ezbt06MjMzqV69OsuXL+f3339nyZIlAGRmZjJq1Chq1qyZbfbJx8eH9957j6SkJAAqV67MmjVrWLRoEfPnzyctLY26devyzjvvUKVKFXx9ffH19aVy5cps3rwZgMcee4zatWuTkpJC48aNLW1v27aN77//nvj4eL755htLf2PGjMkSQ2pqKqNGjSItLQ0AZ2dnli5daimfNWsW06ZNY82aNVSqVImFCxdaeURFRETKBiVX//P3/WIeeeQRjhw5Ynl9p0XiHTt2pGPHjtmO16lTh8OHD2c5dvueUgBNmzZl48aNd4xl7ty5dzx+p723Bg8ezODBg+9Y/3YPPPAAoaGhdy13d3fP195e1tS0aVPLNyBF5M68vLyKOgQRuYscJ1fR0dF89tlnXL58mZkzZxIdHU1aWhqenp4FGZ+UQU2aNCnx62FECtrfv0AjIsVHjtZc7d27l+eff56LFy9aFnYnJyfz5ptvFmhwIiIiIiVNjmaugoODWb9+PZ6enuzduxcAT09PfvvttwINTiQvLl44z6Z/v5vnc4E8n5+T9h3d6xVI2yIiUjzkKLmKi4vDw8MDuLkf063/3vpZpLhwc3PL1/np1W9+Q9KxYgVrhJONo3u9fMcoIiLFW46Sq0aNGhEeHk6fPn0sxz799FOaNm1aUHGJ5MmwYcOKOgQRESnjcpRczZgxg5deeolt27aRnJzMSy+9RGxsLO+//35BxyciIiJSouQouXJ3d2fv3r3s37+fTp06UatWLTp16kTFihULOj4RERGREiXHWzFUqFCBHj16FGQsIiIiIiVejpKrc+fOsWrVKo4fP05ycnKWss8//7xAAhMREREpiXKUXP3jH/+gXr16jB8/HgcHh4KOSURERKTEylFyFRMTw5YtW7Cx0XOeRURERO4lR9lS586d+f777ws6FhEREZESL0czV2+88QYDBw7k4Ycfpnr16lnKFixYUCCBiYiIiJREOUquAgMDsbW1xd3dnfLlyxd0TCL5sn79emJjY3NUNz4+HoAqVapYPQ43NzdtaioiUgblKLk6dOgQX3/9NY6OjgUdj0i+xcbGEhsbS926D9+37tWrVwFwdHSyagxnzpy2ansiIlJy5Ci58vDwID4+XsmVlBh16z7M66+9ft96by16CyBHdXPjVrsiIlL25Ci5euqpp3jppZfw9/fPtuaqX79+BRKYiIiISEmUo+TqyJEjODs7880332Q5bjAYlFyJ1R09epTExEQ6depU1KGI5FtkZCSA3s8iZUiOkquNGzcWdBwiFlFRUcTExOjDSEqFiIgIQMmVSFmS611BzWYzmZmZlj+lhZeXF7169cpyTV5eXpw4cSLXbZ09exYPDw9mzpyZ5Vjr1q3ve25CQgLvvfdelmPTpk3jww8/zHUcIiIiUvhylFxdvHiRcePG0bp1axo2bEijRo0sf0qT5ORkwsPDrdLWAw88wJdffsnp07n71lhCQgJr1661Sgy3pKenW7U9ERERubsc3RacOXMmDg4ObNiwgeeff55NmzaxcuVKOnbsWNDxFapXXnmFVatW0bNnT+zt7S3H33//fT799FMyMjIoX748s2bNokGDBly/fp2pU6dy8uRJ7OzscHNzY8WKFQDY29szfPhwli9fztKlS7P19csvv7B48WKSkpIAGD9+PJ06dWLOnDkkJibi5+dHhQoV2Lx5813j3bVrFx988AFpaWkATJ06laeffhq4OevWo0cPDh06RP369QkMDGT69On88ccf1KxZk5o1a1K9enWmTp1Kamoqy5Yt44cffiA1NRUPDw9mzZpFxYoVrTa2uWEymbh8+TJBQUF5Ot9oNFKpUiUrR5U7CQnXSEhIyPM15JbJZLLaLwZlQWGOl9FoLJB91ESk+MpRcvXTTz+xf/9+HnjgAQwGA56ensybN4+BAwfy7LPPFnSMhaZx48Y0atSIjz/+mBdeeMFyvE+fPgwfPhyAgwcPMnPmTD755BO++eYbkpKS2LNnDwDXrl3L0t7gwYPx8fHh+PHjODn9/32UEhISmDlz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p07F0dExS71Lly7RqFEjy+uKFStSpUoVLl68SJ06dQCoUaOGpbxChQokJSXdsU8HBwdGjx7N6NGjMZlMhISEMGHCBPbv30+VKlXueE7VqlUpX7685fW5c+cYN24cNjb///dsGxsbrly5Ynn94IMPZoknOTnZci21atWylLm4uNx1fG53t/ZEShPNXImI5ECFChW4fv265fXly5ezlA8dOpTQ0FD27NmD0Whk7dq12dpwdnbmzz//tLxOTk4mPj6emjVr5is2R0dHXn75ZZKTk7PMgv2dwWDI8trFxYX33nuPH3/80fLn6NGjOYqnRo0aXLhwwfL69p9FyjolVyIiOdCgQQP+7//+j+vXr3Pq1Cm2bdtmKYuKiuKXX34hLS2NChUqYG9vn2U26JZevXoRGhrK8ePHSU1NZenSpTRt2tQya5Ubq1evJioqitTUVFJSUvjggw+oVKkSbm5uwM0ZojNnztyzjUGDBrF8+XJLwhcXF8e+ffty1H/37t159913uXbtGhcvXuTDDz/MUp6T/kVKKyVXIiI58MILL1CuXDnatGnD1KlT8fX1tZQlJSXxxhtv0KpVKzp37kyVKlV46aWXsrXRpk0b/vGPf/Dqq6/Srl07zpw5k+WbhLlhMBiYPn06Tz31FO3bt+fgwYO8++67VKxYEbi5tmnatGk88cQT7Nmz545tDB06FC8vL4YPH06LFi149tlniYqKylH/48aNw8XFhS5duvDiiy/SrVs37O3tLeWjRo3i7bff5oknnmDdunV5ukaRkspgvtv3fEVERHLoo48+Ys+ePdlmsETKIs1ciYhIrl26dIkjR46QmZlJTEwM69evx9vbu6jDEikW9G1BERHJtbS0NGbOnMnZs2dxcnKiZ8+ePPfcc0UdlkixoNuCIiIiIlak24IiIiIiVqTkSkRERMSKlFyJiIiIWJGSKxERERErUnIlIiIiYkX/D55WPvDsK38JAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(8, 5))\n",
    "sns.set_theme(style=\"whitegrid\")\n",
    "# sns.kdeplot(data=benchmark_dict[model_name], x='value', hue='type', bw_adjust = 0.5)\n",
    "sns.boxplot(data=result_df[result_df['type'] == 'FN'], x='value', y='name', whis=[0, 100], width=.6, palette=\"vlag\")\n",
    "# sns.lmplot(data=result_df[result_df['type'] == 'FN'], x='value', y='index', palette=\"vlag\")\n",
    "# Add in points to show each observation\n",
    "# sns.stripplot(data=result_df[result_df['type'] == 'FN'], x='value', y='type', hue='name', size=4, marker=\"x\", linewidth=1, alpha=.1)\n",
    "# plt.legend(['False Negative', 'True Negative'])\n",
    "plt.xlabel (\"Illusion Strength\");\n",
    "plt.ylabel (\"Model Name\");\n",
    "# plt.ylabel (\"\");\n",
    "# plt.title (f\"False Negative Distribution\");\n",
    "# plt.show()\n",
    "# sns.despine(trim=True, left=True)\n",
    "\n",
    "plt.savefig(\"result.pdf\", format=\"pdf\", bbox_inches='tight', pad_inches= 0.0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fa6b21b8-5901-4829-bc34-4fe879fa72bd",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
